/**
* Table 虚基类
*/

#pragma once
#ifndef __TABLE__H__
#define __TABLE__H__
#include <iostream>
#include <map>
#include <vector>
#include <string>
#include <set>
using std::set;
using std::pair;
using std::map;
using std::vector;
using std::string;
using std::cout;
using std::endl;


namespace compile
{
	class Table
	{
	public:
		Table();
		virtual ~Table();
		virtual string searchTable(pair<string, string> index) const = 0;
		virtual void printTable() const = 0;
		virtual map<pair<string, string>, string> getTable() const = 0;

	protected:
		static bool ifEndSign(char key);
		static string polyfillChar(char new_char);
		static void errorAndExit();
	};

}

#endif